조인하는 테이블의 순서에 따른 차이 :: 오라클 실습[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

오라클 실습
[1]
등록일:2009-05-28 00:12:46 (0%)
작성자:
제목:조인하는 테이블의 순서에 따른 차이
여러  테이블을  조인할  때  Where구문의  테이블  순서와  컬럼의  상수값의  위치에  따라  실행계획이  달라질  수  있다.

-  납품실행계획a  (부서번호#,  주문번호#,  직원번호#)  :가장건수가  많다.
-  주문b  (주문번호#)
-  고객d  (고객번호#)
-  수주진행현황c  (회사번호#,  부서번호#,  주문번호#,  주문일자#,  고객번호#)

  select  distinct  a.부서번호,  a.주문번호,  b.주문일자,  b.직원번호,  b.고객번호,  d.출고중지구분
    from  납품실행계획a,  주문b,  고객d,  수주진행현황  c
  where  c.부서번호  =  b.부서번호  and  c.고객번호  =  b.고객번호
      and  c.직원번호  =  b.직원번호  and  c.주문번호  =  b.주문번호
      and  c.주문일자  =  b.주문일자
      and  a.부서번호  =  b.부서번호  and  a.주문번호  =  b.주문번호
      and  a.주문일자  =  b.주문일자  and  a.완료여부  is  null
      and  c.고객번호  =  d.고객번호
      and  c.부서번호  =  3000  and  c.회사번호  =  3;

  상수가  결정적으로  데이터  양을  줄일  수  있기  때문에  다음과  같이  조인  순서를  조정한다.

select  /*+ordered  */  
distinct  a.부서번호,  a.주문번호,  b.주문일자,  b.직원번호,  b.고객번호,  d.출고중지구분
    from  수주진행현황  c,  납품실행계획  a,  고객  d,  주문  b  
            (c의  범위를  줄여서  드라이빙  테이블로  이용한다.)
where  c.부서번호  =  b.부서번호  and  c.고객번호  =  b.고객번호
    and  c.직원번호  =  b.직원번호  and  c.주문번호  =  b.주문번호
    and  c.주문일자  =  b.주문일자  
    and  a.부서번호  =  c.부서번호  
    and  a.주문번호  =  c.주문번호
    and  a.주문일자  =  c.주문일자  
    and  a.완료여부  is  null
    and  c.고객번호  =  d.고객번호
    and  c.부서번호  =  3000  and  c.회사번호  =  3;
[본문링크] 조인하는 테이블의 순서에 따른 차이
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=31497
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.